﻿using Onshi.POS.Formularios.Recursos;
using Onshi.POS.Modelo.Enumeradores;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Onshi.POS.Formularios
{
    public partial class Domicilios : FormularioBase
    {
        #region Constructores

        public Domicilios()
        {
            InitializeComponent();
        }

        public Domicilios(Int32 id, Byte idTipoDomicilio, Int32 idBarrio, String calle, String numero, String piso, String departamento)
            : this()
        {
            this.id = id;
            this.idTipoDomicilio = idTipoDomicilio;
            this.idBarrio = idBarrio;
            this.calle = calle;
            this.numero = numero;
            this.piso = piso;
            this.departamento = departamento;
        }

        #endregion

        #region Atributos

        private Int32 id;
        private Byte idTipoDomicilio;
        private Int32 idBarrio;
        private String calle;
        private String numero;
        private String piso;
        private String departamento;

        #endregion

        #region Propiedades

        public Int32 Id
        {
            get { return id; }
        }

        public Byte IdTipoDomicilio
        {
            get { return (Byte)cboTipoDomicilio.SelectedValue; }
        }

        public Int32 IdBarrio
        {
            get { return ucBarrio.IdBarrioSeleccionado; }
        }

        public String Calle
        {
            get { return txtCalle.Text; }
        }

        public String Numero
        {
            get { return mskNumero.Text; }
        }

        public String Piso
        {
            get { return txtPiso.Text; }
        }

        public String Departamento
        {
            get { return txtDepartamento.Text; }
        }

        #endregion

        #region Eventos

        private void Domicilios_Load(Object sender, EventArgs e)
        {
            cboTipoDomicilio.Actualizar();
            if (id == 0)
            {
                cboTipoDomicilio.SelectedValue = (Byte)EnumTiposDomicilios.Otro;
                ucBarrio.IdBarrioSeleccionado = (Int32)EnumLocalidades.NoEspecificada;
            }
            else
            {
                cboTipoDomicilio.SelectedValue = idTipoDomicilio;
                ucBarrio.IdBarrioSeleccionado = idBarrio;
                txtCalle.Text = calle;
                mskNumero.Text = numero;
                txtPiso.Text = piso;
                txtDepartamento.Text = departamento;
            }
            ucBarrio.Actualizar();
        }

        private void btnCancelar_Click(Object sender, EventArgs e)
        {
            Close();
        }

        private void btnAceptar_Click(Object sender, EventArgs e)
        {
            var validado = true;
            errDomicilios.Clear();
            if (cboTipoDomicilio.SelectedIndex == -1)
            {
                validado = false;
                errDomicilios.SetError(cboTipoDomicilio, "El tipo de domicilio no puede quedar vacío");
            }
            if (ucBarrio.IdBarrioSeleccionado == 0)
            {
                validado = false;
                errDomicilios.SetError(ucBarrio, "El barrio no puede quedar vacío");
            }
            if (String.IsNullOrWhiteSpace(txtCalle.Text))
            {
                validado = false;
                errDomicilios.SetError(txtCalle, "La calle no puede quedar vacía");
            }
            if (String.IsNullOrWhiteSpace(mskNumero.Text))
            {
                validado = false;
                errDomicilios.SetError(mskNumero, "El número no puede quedar vacío");
            }
            if (validado)
                DialogResult = DialogResult.OK;
        }

        #endregion
    }
}
